#pragma once

#include <eosio/asset.hpp>
#include <eosio/eosio.hpp>
#include <eosio/singleton.hpp>
#include <eosio/system.hpp>
#include <eosio/time.hpp>

CONTRACT life_cycle_contract : public eosio::contract {
public:
    using contract::contract;

    ACTION method1(eosio::name user);
    ACTION method2(eosio::name user);
    ACTION method3(eosio::name user);
    ACTION method4(eosio::name user);
    ACTION method5(eosio::name user);

    [[eosio::on_notify("eosio.token::transfer")]] void eos_transfer();

    // 单例表结构
    TABLE info {
        uint64_t call_num;
        eosio::time_point_sec last_call_time;
    };

    using info_table = eosio::singleton<"info"_n, info>;

    static void on_call(eosio::name contract_name, eosio::name ram_payer);
};
